﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

//杨辉三角
//在屏幕上打印杨辉三角。
//1
//1 1
//1 2 1
//1 3 3 1
//……
// 组合数表示法‌
//杨辉三角的第n行第k个数（从0开始计数）等于组合数C(n, k)，即从n个元素中取k个的组合数，计算公式为：
//C(n,k)=n!/(k!(n−k)!)
//例如，第4行（1 4 6 4 1）对应C(4, 0)至C(4, 4)。‌‌‌

//求n和k以及n-k的阶乘
int fact(int temp)
{
	int sum = 1;
	if (temp < 2)
	{
		return sum;
	}
	int i = 0;
	for (i = 2; i <= temp; i++)
	{
		sum = sum * i;
	}
	return sum;
}
int main()
{
	//n表示杨辉三角的行数
	int n = 0;
	printf("输入杨辉三角的行数>>>\n");
	scanf("%d", &n);
	//外层循环每循环一次，就打印出一行杨辉三角
	int i = 0;
	for (i = 0; i < n; i++)
	{
		int j = 0;
		//杨辉三角有几行就有几个数，所以第二行就有两个数(从0开始算)
		//然后内层循环每循环一次就计算出一个数
		for (j = 0; j <= i; j++)
		{
			//公式：C(n,k) = n!/(k!(n−k)!)
			int temp1 = fact(i) / (fact(j) * fact(i - j));
			printf("%d ", temp1);
		}
		printf("\n");
	}
	return 0;
}